Industrial controllers are special purpose processing devices used for controlling industrial processes, machines, manufacturing equipment, and other factory automation applications. In accordance with a control program or routine, an industrial controller may measure one or more process variables or inputs representative of the status of a controlled process, and change outputs effecting control of the process. The inputs and outputs may be binary, (e.g., on or off), and/or analog assuming a continuous range of values. The control routine may be executed in a series of execution cycles with batch processing capabilities, and may comprise one or more functional units. Such a control routine may be created in a controller configuration system having tools and interfaces whereby a user may implement a control strategy using programming languages or graphical representations of control functionality, sometimes referred to as function blocks. The control routine may be downloaded from the configuration system into one or more controllers for implementation of the control strategy in controlling a process or machine.
The measured inputs received from a controlled process and the outputs transmitted to the process may pass through one or more input/output (I/O) modules in a control system, which serve as an electrical interface between the controller and the controlled process, and may be located proximate or remote from the controller. The inputs and outputs may be recorded in an I/O table in processor memory. Input values may be asynchronously read from the controlled process by one or more input modules and output values may be written directly to the I/O table by a processor for subsequent communication to the process by specialized communications circuitry. An output module may interface directly with a controlled process, by providing an output from an I/O table to an actuator such as a motor, valve, solenoid, and the like.
During execution of the control routine, values of the inputs and outputs exchanged with the controlled process pass through the I/O table. The values of inputs in the I/O table may be asynchronously updated from the controlled process by dedicated scanning circuitry. This scanning circuitry may communicate with input and/or output modules over a bus on a backplane or network communications. The scanning circuitry may also asynchronously write values of the outputs in the I/O table to the controlled process. The output values from the I/O table may then be communicated to one or more output modules for interfacing with the process. Thus, a controller processor may simply access the I/O table rather than needing to communicate directly with the controlled process.
In distributed control systems, controller hardware configuration may be facilitated by separating the industrial controller into a number of control modules, each of which performs a different function. Particular control modules needed for the control task may then be connected together on a common backplane within a rack and/or through a network or other communications medium. The control modules may include processors, power supplies, network communication modules, and I/O modules exchanging input and output signals directly with the controlled process. Data may be exchanged between modules using a backplane communications bus, which may be serial or parallel, or via a network. In addition to performing I/O operations based solely on network communications, smart modules exist which may execute autonomous logical or other control programs or routines.
Various control modules of a distributed industrial control system may be spatially distributed along a common communication link in several racks. Certain I/O modules may thus be located proximate a portion of the control equipment, and away from the remainder of the controller. Data may be communicated with these remote modules over a common communication link, or network, wherein all modules on the network communicate via a standard communications protocol.
In a typical distributed control system, one or more I/O modules are provided for interfacing with a process. The outputs derive their control or output values in the form of a message from a master or peer device over a network or a backplane. For example, an output module may receive an output value from a processor, such as a programmable logic controller (PLC), via a communications network or a backplane communications bus. The desired output value is generally sent to the output module in a message, such as an I/O message. The output module receiving such a message will provide a corresponding output (analog or digital) to the controlled process. Input modules measure a value of a process variable and report the input values to a master or peer device over a network or backplane. The input values may be used by a processor (e.g., a PLC) for performing control computations.
An industrial controller may be customized to a particular process by writing one or more control software routines that may be stored in the controller's memory and/or by changing the hardware configuration of the controller to match the control task or strategy. Such control routines may be generated using controller configurations systems or tools, which facilitate translation of a desired control strategy for the process into a control routine executable in a controller. Conventional configuration tools provide for graphical representations of control functions known as function blocks. A user models a control strategy by placing function blocks in a user interface work surface, and associating the function blocks using graphical connections known as wires, via a graphical user interface. Once the user has thus defined the desired control strategy, the configuration system compiles or verifies the graphical representation to produce a control routine, which may then be downloaded to one or more control modules in the control system. The control functions represented by the function blocks are implemented in the verified control routine according to execution ordering which may be determined in the compilation or verification process in the configuration tool.
Existing controller configuration tools allow a user to manually specify the execution ordering of the function blocks. For instance, the user may assign an order number to each function block using a control configuration system user interface. The compiled control routine will then perform the functionality underlying the function blocks in the assigned execution order. However, the manual ordering of function blocks may cause data latency or other data flow problems, for example, where a user assigns execution order numbers to function blocks in an illogical manner. Another disadvantage to manual execution order assignment is that subsequent changes to the control strategy, such as where new function blocks are added, may require manual reordering of existing function blocks in order to achieve proper or desired data flow.
Some conventional control system configuration tools provide for automated function block execution order generation based on the location of function blocks in the user interface. For example, the user may drag and drop graphical representations of the function blocks onto a work surface or work space in a graphical user interface. The associations between various function blocks may then be established by connecting outputs and inputs of the function blocks using wires or other connectors in the interface. These prior systems then assign execution ordering for the function blocks according to vertical and/or horizontal positioning of the function block representations in the interface work surface. For instance, execution ordering may be done from left to right, and top to bottom, wherein function blocks near the top left of the work space are executed before those near the bottom or right portions thereof. However, the execution ordering based on function block location in a work space is prone to data flow problems, particularly where the user does not position the function blocks with an eye toward data flow during execution of the resulting control routine. Thus, there is a need for improved methods and configuration tools by which data flow problems are reduced or minimized in creating control routines for industrial control systems.